package io.mft.commons.db.mapper;

import java.util.ArrayList;
import java.util.List;

import cn.hutool.core.bean.BeanUtil;
import io.mft.commons.db.mapper.exception.MapperException;
import io.mft.commons.function.response.kv.KVMap;
import io.mft.commons.function.response.kv.KVMapList;
/**
 * SQL查询结果
 * @类型名称：SQLQueryMapResult
 * @说明：TODO
 * @创建者: 胡常建  
 * @创建时间: 2018年3月9日 上午8:55:07
 * @修改者: 胡常建  
 * @修改时间: 2018年3月9日 上午8:55:07
 */
public class SQLQueryMapResult extends KVMapList{
	        /**
	 * @字段名称 serialVersionUID
	 * @说明：TODO
	        */  
	    
	private static final long serialVersionUID = 1L;
	public SQLQueryMapResult(List<KVMap> dataList) {
		this.addAll(dataList);
	}
	public List<KVMap> getDataList() {
		return this;
	}
	
	public KVMap getData() {
		if (this.size()>0) {
			return this.get(0);
		}else {
			return null;
		}
	}
	public boolean isExistValue() {
		return this.size()>0;
	}
	
	public <T> T getDataObj(Class<T> classType) {
		return populate(classType, getData());
	}
	private <T>  T populate(Class<T> classType,KVMap data) {
		try {
			T object =BeanUtil.mapToBean(data, classType, false);
			return object;
		} catch (Exception e) {
			throw new MapperException("", e);
		}
	}
	public <T> List<T> getDataObjList(Class<T> classType) {
		List<T> list=new ArrayList<T>();
		List<KVMap> dataList=getDataList();
		for (KVMap data : dataList) {
			T t=populate(classType, data);
			list.add(t);
		}
		return list;
	}
}
